package de.unicornEntertainment.stundenplanapp.threadTools;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.AsyncTask;
import android.widget.Toast;
import de.unicornEntertainment.stundenplanapp.login.ActivityLogin;
import de.unicornEntertainment.stundenplanapp.util.JSONParser;

public class MyAsyncTask_Login extends AsyncTask {
	
	// Globale Deklaration
	private ActivityLogin context;
//	private String username = "";
//	private String passwort = "";
//	private String benutzertyp;
	private String klasse;
	private String user = "";
	private String pass = "";
	
	// JSON Nodes
	private static final String TAG_NUTZER = "user";
	private static final String TAG_IDNUTZERDATEN = "idNutzerdaten";
	private static final String TAG_USERNAME = "Username";
	private static final String TAG_PASSWORT = "Passwort";
	private static final String TAG_EMAIL = "E-Mail";
	private static final String TAG_BENUTZERTYP = "Benutzertyp";
	private static final String TAG_KLASSE = "Klasse";
	
	// URL für JSON-Abruf
	private String url = "http://gruppef.green-lagoon.de/login.php?";
	private String benutzertyp;
	private JSONArray nutzer;
	

	// Konstruktoren
	public MyAsyncTask_Login(ActivityLogin context) {
		this.context = context;
	}
	

	@Override
	protected Object doInBackground(Object... arg0) {
		
//		System.out.println("Parsing JSON...");
		
//		username = context.getUsername();
//		passwort = context.getPasswort();
		
		user = context.getUser();
		pass = context.getPass();
		
		user = user.trim();
		//user = user.replaceAll("\\W", "");
		user = user.replaceAll("[^a-zA-Z0-9\\-]", "");
		pass = pass.trim();
//		pass = pass.replaceAll("\\W", "");
		pass = pass.replaceAll("[^a-zA-Z0-9\\-]", "");
		
		context.setUser(user);
		context.setPass(pass);
		
		// URL um Parameter 'user' und 'passwort' erweitern
		url += "user=" + user + "&passwort=" + pass + "";
		System.out.println("URL: " + url);
		try {
			// JSON Parser instanziieren
			JSONParser jParser = new JSONParser();
			
			// JSON als String von URL abgreifen
			JSONObject benutzer = jParser.getJSONFromUrl(url);
			
			// JSON-Array mit allen Blöcken abrufen
            nutzer = benutzer.getJSONArray(TAG_NUTZER);
			
            if (nutzer.length() > 0) {
            	for (int i = 0; i < nutzer.length(); i++) {
            		JSONObject user = nutzer.getJSONObject(i);
    				
					System.out.println("JSON: " + benutzer.toString());
					System.out.println("Anzahl Nutzer: " + nutzer.length());
					
		//			username = benutzer.getString(TAG_USERNAME);
		//			passwort = benutzer.getString(TAG_PASSWORT);
					
					
					klasse = user.getString(TAG_KLASSE);
					context.setKlasse(klasse);
					
					benutzertyp = user.getString(TAG_BENUTZERTYP);
					context.setBenutzertyp(benutzertyp);
            	}
			}
            else {
				context.setKlasse("");
				context.setBenutzertyp("0");
				return null;
			}
		}
		catch(JSONException e) {
			e.printStackTrace();
			
			// Wenn keine Daten ausgelesen wurden, Strings mit einem Leerstring belegen
//			username = "";
//			passwort = "";
			context.setBenutzertyp(benutzertyp = "0");
			
			// Dialog im Fehlerfall entlassen
			context.getPrg().dismiss();
		}
		catch (Exception e) {
			e.printStackTrace();
			
			// Wenn keine Daten ausgelesen wurden, Strings mit einem Leerstring belegen
//			username = "";
//			passwort = "";
			context.setBenutzertyp(benutzertyp = "0");
			
			// Dialog im Fehlerfall entlassen
			context.getPrg().dismiss();
		}
		return null;
	}
	
	@Override
	protected void onPostExecute(Object result) {
		
//		System.out.println("Nachbereitung!!!");
		
		// Benutzertyp auslesen
		if (context.getBenutzertyp().equals("s") || context.getBenutzertyp().equals("l")) {
			
			// Wenn Benutzer ein Schüler
			if (benutzertyp.equals("s")) {
				context.getMyIntent().putExtra("typ", 1);
			}
			// Wenn Benutzer ein Lehrer
			else if (benutzertyp.equals("l")) {
				context.getMyIntent().putExtra("typ", 2);
			}
			
			context.startActivity(context.getMyIntent());
			
			// Dialog entlassen
			context.getPrg().dismiss();
		}
		else {
			// Dialog entlassen
			context.getPrg().dismiss();
			
			// User benachrichtigen, dass Login nicht korrekt.
			Toast.makeText(context, "Login inkorrekt, bitte überprüfen!", Toast.LENGTH_LONG).show();
		} 
	}
}
